#ifndef SEMANTICNODECONSTRUCTOR_H_
#define SEMANTICNODECONSTRUCTOR_H_

#include <string>
#include <sstream>
#include <vector>
#include "SemanticNode.h"

#include "../syntax_tree.h"
#include "../main_container.h"


extern MainContainer *CompilerData;


//TODO brisi
#include "OurSemanticAnalyzer.h"



class SemanticNodeMethodBody;
class SemanticNodeMethodCall;

class SemanticNodeConstructor : public SemanticNode  {

private:

	bool modPublic, modPrivate, modProtected;
	std::string name;
	std::vector<SemanticNodeExpression*> arguments;
	SemanticNodeMethodCall *inheritCall;
	SemanticNodeMethodBody *body;

public:

	SemanticNodeConstructor (SyntaxTreeNode *syntaxNode, SemanticNode *parent);

	std::string toDebugString (int tab);


private:

	void parseMods (SyntaxTreeNode* modsNode);

};

#endif /* SEMANTICNODECONSTRUCTOR_H_ */
